/*
 * En este archivo, definimos las estructuras de datos
 * usadas el logeo de datos
 */

#ifndef _LOG_H
#define	_LOG_H

    #include <mpi.h>
    #include <unistd.h>
    #include "../../compartido/vectores.h"
    
    /*
     * Imprime en el log de la aplicación los datos pasados por parámetros
     */
    
    #ifdef _DO_LOG
        #define LOGGER(cadena, ...) escribirLog(__FILE__, __LINE__, cadena, ##__VA_ARGS__)
    #else
        #define LOGGER(cadena, ...)
    #endif

    void escribirLog(char *archivo, int linea, char *cadena, ...);
    
    /*
     * Imprime un estado MPI
     */
    char *imprimirMensaje(MPI_Status *mensaje);
    
    /*
     * Imprime un bloque de datos int
     */
    char *imprimirBloqueInt(int *bloque, long long tamBloque);
    
    /*
     * Imprime un bloque de datos long
     */
    char *imprimirBloqueLong(long long *bloque, long long tamBloque);
    
    /*
     * Imprime un bloque de char
     */
    char *imprimirBloqueChar(char *bloque, int tamBloque);
    
    
    // Imprime los parámetros
    char *imprimirVector(struct VECTOR *vectorLocal);
    
    
#endif	/* _LOG_H */
